package test.through.tree;

import java.math.BigDecimal;

import com.alibaba.fastjson.JSON;

import hyl.base.flow.chart.CWorkOrd;
import hyl.base.flow.chart.INode;
import hyl.base.flow.chart.IWorkOrd;
import hyl.base.flow.chart.IWorker;
import hyl.core.MyFun;
import hyl.core.MyMath;

/**
 * 
 * <p>
 * className: T1Up
 * </p>
 * <p>
 * Description: 计算左右区节点数量的算法
 * </p>
 * 
 * @author: Administrator
 * @date: 2018年9月19日 上午9:45:16
 * @copyright: 2018 da you zou Inc. All rights reserved.
 */
public class CworkAdd1nNode implements IWorker {

	// 计算每个节点左右区的节点数量和收入总额
	@Override
	public Object run(INode cur,IWorkOrd 待加工对象,Object ...其他参数)throws Exception {
		INode pNode = cur.getParent();
		// MyFun.print(cur.getId(),JSON.toJSONString(cur.getProps()));
		String 左右 = (String) cur.getAttr("WZ");
		BigDecimal 左收入 = MyFun.obj2Decimal((BigDecimal) cur.getAttr("L收入"), MyMath.BD0);
		Integer 左数量 = MyFun.nvlInt((Integer) cur.getAttr("L数量"), 0);
		BigDecimal 右收入 = MyFun.obj2Decimal((BigDecimal) cur.getAttr("R收入"), MyMath.BD0);
		Integer 右数量 = MyFun.nvlInt((Integer) cur.getAttr("R数量"), 0);
		BigDecimal 收入 = MyFun.obj2Decimal((BigDecimal) cur.getAttr("收入"), MyMath.BD0);
		// Integer 数量 = MyFun.nvlInt((Integer) cur.getProp("数量"),0);
		if (pNode != null) {
			String 左右数量 = 左右 + "数量";
			String 左右收入 = 左右 + "收入";
			pNode.putAttr(左右数量, 1 + 左数量 + 右数量);
			pNode.putAttr(左右收入, MyMath.sum(收入, 左收入, 右收入));
			// MyFun.print(pNode.getId(),左右收入, 收入, 左收入, 右收入);
		}
		return 待加工对象;

	}


}
